﻿Imports PadovadoAPI
Imports System.Data
Imports System.IO


Partial Class AdminAggiungiEvento
    Inherits System.Web.UI.Page

    Public Property PK_EventoCorrente As Integer
        Set(value As Integer)
            ViewState("PK_EventoCorrente") = value
        End Set
        Get
            If IsNothing(ViewState("PK_EventoCorrente")) Then ViewState("PK_EventoCorrente") = New Evento
            Return ViewState("PK_EventoCorrente")
        End Get
    End Property

    Public Property BrochureCorrente As String
        Set(value As String)
            ViewState("BrochureCorrente") = value
        End Set
        Get
            Return ViewState("BrochureCorrente")
        End Get
    End Property

    Public Property ImgCorrente As String
        Set(value As String)
            ViewState("ImgCorrente") = value
        End Set
        Get
            Return ViewState("ImgCorrente")
        End Get
    End Property

    Public Property SqlGlobal As String
        Set(value As String)
            ViewState("SqlGlobal") = value
        End Set
        Get
            If String.IsNullOrEmpty(ViewState("SqlGlobal")) Then
                ViewState("SqlGlobal") = "SELECT PK_Evento, NomeEvento, DataInizio, DataFine FROM Evento WHERE Deleted = 0 ORDER BY DataModifica desc, PK_Evento desc"
            End If
            Return ViewState("SqlGlobal")
        End Get
    End Property


    Public Property IscrizioneCorrente As String
        Set(value As String)
            ViewState("IscrizioneCorrente") = value
        End Set
        Get
            Return ViewState("IscrizioneCorrente")
        End Get
    End Property


    Public Function GetUploadedFile(FileUp As FileUpload, LblUp As Label, folder As String) As String
        Dim retStr As String = ""
        If FileUp.HasFile Then
            Try
                Dim di As DirectoryInfo = New DirectoryInfo(Server.MapPath("/"))
                FileUp.SaveAs(di.FullName & "/" & folder & "/" & FileUp.FileName)
                retStr = "Http://www.padovado.it/" & folder & "/" & FileUp.FileName
                LblUp.Text = "File name: " & FileUp.PostedFile.FileName & " " & "File Size: " & _
                                            FileUp.PostedFile.ContentLength & " kb " & _
                                            "Content type: " & FileUp.PostedFile.ContentType
            Catch ex As Exception
                LblUp.Text = "ERRORE nel caricamento: " & ex.Message.ToString()
            End Try
        Else
            LblUp.Text = "Nessuna Brochure allegata"
        End If
        Return retStr
    End Function


    Protected Sub BtnSalva_Click(sender As Object, e As System.EventArgs) Handles BtnSalva.Click

        Dim sql As String = ""
        Dim dbo As New DBObject

        Dim evt As New Evento
        evt.LoadFromPk(PK_EventoCorrente)

        evt.FK_Organizzatore = Organizzatore.LoadFromPk(DDLOrganizzatore.SelectedItem.Value)
        Dim Targets As New List(Of Target)
        For Each li As ListItem In LBTarget.Items
            If li.Selected = True Then
                Targets.Add(Target.LoadFromPk(li.Value))
            End If
        Next
        evt.FK_Target = Targets.ToArray
        evt.NomeEvento = TBNomeEvento.Text
        evt.Descrizione = TBDescrizione.Value
        evt.Priorita = TBPriorita.Text
        evt.intCategoria = DDLCategoria.SelectedItem.Value
        evt.DataInizio = CntlDateEvento.DataInizio
        evt.DataFine = CntlDateEvento.DataFine
        evt.Link = TBLink.Text

        Dim BrochureLink As String = ""
        BrochureLink = GetUploadedFile(FUBrochure, LblUploadedBrochure, "brochure")
        If String.IsNullOrEmpty(BrochureLink) Then BrochureLink = BrochureCorrente

        Dim ImgLink As String = ""
        ImgLink = GetUploadedFile(FUImmagineEvento, LblUploadedImmagine, "eventimages")
        If String.IsNullOrEmpty(ImgLink) Then ImgLink = ImgCorrente
        
        evt.ImgEvento = ImgLink
        evt.brochure = BrochureLink
        evt.Prezzo = TBPrezzo.Text
        evt.IngressoLibero = RblGratuito.SelectedValue
        evt.DataModifica = DateTime.Now.Date

        If IsNothing(evt.FK_Indirizzo) Then evt.FK_Indirizzo = New Indirizzo
        evt.FK_Indirizzo.Strada = TBStrada.Text
        evt.FK_Indirizzo.Civico = TBCivico.Text
        evt.FK_Indirizzo.CAP = TBCAP.Text
        evt.FK_Indirizzo.Comune = TBComune.Text
        evt.FK_Indirizzo.Provincia = TBProvincia.Text
        evt.FK_Indirizzo.Presso = TBPresso.Text
        If IsNothing(evt.FK_Iscrizione) Then evt.FK_Iscrizione = New Iscrizione
        evt.FK_Iscrizione.Dettagli = TBDettagliIscrizione.Text
        evt.FK_Iscrizione.DataApertura = CntlDateIscrizioni.DataInizio
        evt.FK_Iscrizione.DataChiusura = CntlDateIscrizioni.DataFine

        Dim IscrizioneLink As String = ""
        IscrizioneLink = GetUploadedFile(FUModuloIscrizione, LblUploadedIscrizione, "moduliiscrizione")
        If String.IsNullOrEmpty(IscrizioneLink) Then IscrizioneLink = IscrizioneCorrente

        evt.FK_Iscrizione.ModuloIscrizione = IscrizioneLink

        evt.Salva()

        caricaGrid(SqlGlobal)
    End Sub


    Protected Sub BTNInserisci_Click(sender As Object, e As System.EventArgs) Handles BTNInserisci.Click
        Dim sql As String = ""
        Dim dbo As New DBObject
        Dim PK_Indirizzo As Integer
        Dim PK_Evento As Integer
        Dim PK_Iscrizione As Integer
        Try

            If (CbCopiaOrganizzatore.Checked = False) Then
                sql = "INSERT INTO Indirizzo VALUES ('" & TBStrada.Text.Replace("'", "''") & "', '" & TBCivico.Text & "', '" & TBComune.Text.Replace("'", "''") & "', '" & TBProvincia.Text & _
                    "', '" & TBCAP.Text & "', '" & TBPresso.Text.Replace("'", "''") & "', 0)"
                dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)
                sql = "SELECT MAX(PK_Indirizzo) FROM Indirizzo"
                PK_Indirizzo = dbo.ExecuteScalar(sql, Nothing, CommandType.Text)
            Else
                sql = "SELECT FK_Indirizzo FROM Organizzatore WHERE PK_Organizzatore = " & DDLOrganizzatore.SelectedValue
                PK_Indirizzo = dbo.ExecuteScalar(sql, Nothing, CommandType.Text)
            End If

            If (CBIscrizione.Checked) Then
                Dim IscrizioneLink As String = ""
                IscrizioneLink = GetUploadedFile(FUModuloIscrizione, LblUploadedIscrizione, "moduliiscrizione")
                sql = "INSERT INTO Iscrizione VALUES('" & CntlDateIscrizioni.DataInizio.ToString("yyyyMMdd") & "', '" & _
                    CntlDateIscrizioni.DataFine.ToString("yyyyMMdd") & "', '" & TBDettagliIscrizione.Text.Replace("'", "''") & "', '" & _
                    IscrizioneLink & "', 0)"
                dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)
                sql = "SELECT MAX(PK_Iscrizione) FROM Iscrizione"
                PK_Iscrizione = dbo.ExecuteScalar(sql, Nothing, CommandType.Text)
            End If
         
            'UPLOAD DELLA BROCHURE
            Dim BrochureLink As String = ""
            BrochureLink = GetUploadedFile(FUBrochure, LblUploadedBrochure, "brochure")
            Dim ImgLink As String = ""
            ImgLink = GetUploadedFile(FUImmagineEvento, LblUploadedImmagine, "eventimages")

            sql = "INSERT INTO Evento (NomeEvento, Descrizione, Link, DataInizio, DataFine, FK_Indirizzo, Priorita, FK_Iscrizione, " & _
                                        " ImgEvento, Prezzo, IngressoLibero, DataModifica, Brochure, intCategoria, Deleted) VALUES ('" & _
                                            TBNomeEvento.Text.Replace("'", "''") & "', '" &
                                            TBDescrizione.Value.Replace("'", "''") & "', '" &
                                            TBLink.Text & "', '" &
                                            CntlDateEvento.DataInizio.ToString("yyyyMMdd") & "', '" &
                                            CntlDateEvento.DataFine.ToString("yyyyMMdd") & "', " &
                                            PK_Indirizzo & ", '" &
                                            TBPriorita.Text & "', " &
                                            PK_Iscrizione & ", '" &
                                            ImgLink & "', '" &
                                            TBPrezzo.Text.Replace("'", "''") & "', " &
                                            RblGratuito.SelectedValue & ", '" &
                                            DateTime.Now.Date.ToString("yyyyMMdd") & "', '" &
                                            BrochureLink & "', " &
                                            DDLCategoria.SelectedItem.Value & ",0)"
            dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)

            sql = "SELECT MAX(PK_Evento) FROM Evento"
            PK_Evento = dbo.ExecuteScalar(sql, Nothing, CommandType.Text)

            sql = "INSERT INTO Evento_Organizzatore VALUES (" & PK_Evento & ", '" & DDLOrganizzatore.SelectedValue & "') "
            dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)

            For Each li As ListItem In LBTarget.Items
                If li.Selected = True Then
                    sql = "INSERT INTO Evento_Target VALUES (" & PK_Evento & ", '" & li.Value & "') "
                    ' Throw New Exception(sql)
                    dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)
                End If

            Next
           caricaGrid(SqlGlobal)

        Catch ex As Exception
            Throw New Exception(sql)
        End Try
    End Sub

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        If String.IsNullOrEmpty(Session("UserInSession")) Then
            Response.Redirect("Admin.aspx")
        End If
        Dim sql As String = ""
        Dim dbo As New DBObject
        Dim ds As New DataSet
        If Not IsPostBack Then

            sql = "SELECT PK_Organizzatore, Denominazione FROM Organizzatore INNER JOIN Anagrafica ON PK_Anagrafica = FK_Anagrafica ORDER BY Denominazione"
            ds = dbo.FillDS(sql, Nothing, CommandType.Text)
            If Not IsNothing(ds) AndAlso (ds.Tables.Count > 0) AndAlso ds.Tables(0).Rows.Count > 0 Then
                DDLOrganizzatore.DataSource = ds.Tables(0)
                DDLOrganizzatore.DataTextField = "Denominazione"
                DDLOrganizzatore.DataValueField = "PK_Organizzatore"
                DDLOrganizzatore.DataBind()
            End If

            sql = "SELECT PK_Target, Descrizione FROM Target ORDER BY Descrizione"

            ds = dbo.FillDS(sql, Nothing, CommandType.Text)
            If Not IsNothing(ds) AndAlso (ds.Tables.Count > 0) AndAlso ds.Tables(0).Rows.Count > 0 Then
                LBTarget.DataSource = ds.Tables(0)
                LBTarget.DataTextField = "Descrizione"
                LBTarget.DataValueField = "PK_Target"
                LBTarget.DataBind()
            End If

            caricaGrid(SqlGlobal)

        End If

    End Sub

    Public Sub caricaGrid(sql As String)

        Dim ds As New DataSet
        Dim dbo As New DBObject
        ds = dbo.FillDS(sql, Nothing, CommandType.Text)
        If Not IsNothing(ds) AndAlso (ds.Tables.Count > 0) AndAlso ds.Tables(0).Rows.Count > 0 Then
            GVEventi.DataSource = ds.Tables(0)
            GVEventi.DataBind()
        End If
    End Sub

    Public Sub caricaRiga(ev As Evento)
        TBNomeEvento.Text = ev.NomeEvento
        TBDescrizione.Value = ev.Descrizione
        'Throw New Exception(ev.Descrizione & " " & ev.NomeEvento)
        TBPriorita.Text = ev.Priorita
        TBPrezzo.Text = ev.Prezzo
        BrochureCorrente = ev.brochure
        ImgCorrente = ev.ImgEvento
        DDLCategoria.SelectedItem.Value = ev.intCategoria
        If (ev.IngressoLibero) Then
            RblGratuito.SelectedValue = 1
            TBPrezzo.Enabled = False
            LblPrezzo.Enabled = False
        Else
            RblGratuito.SelectedValue = 0
            TBPrezzo.Enabled = True
            LblPrezzo.Enabled = True
        End If

        CntlDateEvento.DataInizio = ev.DataInizio
        CntlDateEvento.DataFine = ev.DataFine
        TBLink.Text = ev.Link
        If Not IsNothing(ev.FK_Target) AndAlso ev.FK_Target.Length > 0 Then
            For Each Tg As Target In ev.FK_Target
                LBTarget.SelectedValue = Tg.PK_Target
            Next
        End If
        DDLOrganizzatore.SelectedValue = ev.FK_Organizzatore.PK_Organizzatore
        If Not IsNothing(ev.FK_Indirizzo) Then
            TBStrada.Text = ev.FK_Indirizzo.Strada
            TBCivico.Text = ev.FK_Indirizzo.Civico
            TBCAP.Text = ev.FK_Indirizzo.CAP
            TBComune.Text = ev.FK_Indirizzo.Comune
            TBProvincia.Text = ev.FK_Indirizzo.Provincia
            TBPresso.Text = ev.FK_Indirizzo.Presso
        End If
        If Not IsNothing(ev.FK_Iscrizione) Then
            TBDettagliIscrizione.Text = ev.FK_Iscrizione.Dettagli
            CntlDateIscrizioni.DataInizio = ev.FK_Iscrizione.DataApertura
            CntlDateIscrizioni.DataFine = ev.FK_Iscrizione.DataChiusura
            IscrizioneCorrente = ev.FK_Iscrizione.ModuloIscrizione
        Else
            IscrizioneCorrente = ""
        End If
    End Sub

    Protected Sub GVEventi_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GVEventi.RowCommand
        If Not IsNothing(e) Then

            Dim index As Integer = Convert.ToInt32(e.CommandArgument)
            Dim row As GridViewRow = GVEventi.Rows(index)
            PK_EventoCorrente = row.Cells(0).Text

            If e.CommandName = "CaricaRiga" Then


                Dim ev As New Evento
                ev.LoadFromPk(PK_EventoCorrente)
                caricaRiga(ev)
            ElseIf e.CommandName = "EliminaRiga" Then

                Evento.CancellaEvento(PK_EventoCorrente)

            End If
        End If

    End Sub

    Protected Sub GVEventi_PageIndexChanging(sender As Object, e As GridViewPageEventArgs) Handles GVEventi.PageIndexChanging

        GVEventi.PageIndex = e.NewPageIndex

        caricaGrid(SqlGlobal)
    End Sub

    Protected Sub BtnSvuota_Click(sender As Object, e As System.EventArgs) Handles BtnSvuota.Click
        DDLOrganizzatore.ClearSelection()
        CBIscrizione.Checked = False
        LBTarget.ClearSelection()
        TBNomeEvento.Text = ""
        TBDescrizione.Value = ""
        TBPriorita.Text = ""
        TBLink.Text = ""
        CntlDateEvento.DataInizio = DateTime.Now.Date
        CntlDateEvento.DataFine = DateTime.Now.Date
        TBStrada.Text = ""
        TBCivico.Text = ""
        TBComune.Text = ""
        TBCAP.Text = ""
        TBProvincia.Text = ""
        TBPresso.Text = ""
        CntlDateIscrizioni.DataInizio = DateTime.Now.Date
        CntlDateIscrizioni.DataFine = DateTime.Now.Date
        TBDettagliIscrizione.Text = ""
        DDLCategoria.SelectedValue = 100
        PK_EventoCorrente = 0
        TBPrezzo.Text = ""
        TBPrezzo.Enabled = False
        RblGratuito.SelectedValue = 0
    End Sub

    Protected Sub LinkButton1_Click(sender As Object, e As System.EventArgs) Handles LinkButton1.Click
        Session("UserInSession") = Nothing
        Response.Redirect("Default.aspx")
    End Sub

    Protected Sub RblGratuito_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles RblGratuito.SelectedIndexChanged
        If (RblGratuito.SelectedValue = 0) Then
            TBPrezzo.Enabled = True
            LblPrezzo.Enabled = True
        Else
            TBPrezzo.Enabled = False
            LblPrezzo.Enabled = False
        End If
    End Sub

    Protected Sub DDLOrganizzatore_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DDLOrganizzatore.SelectedIndexChanged
        If Not IsNothing(e) AndAlso DDLOrganizzatore.SelectedValue > 0 Then
            Dim org As New Organizzatore
            org = Organizzatore.LoadFromPk(DDLOrganizzatore.SelectedValue)
            If Not IsNothing(org) Then
                TBLink.Text = org.SitoWeb
                ImgCorrente = org.imgLocaleString
                LblUploadedImmagine.Text = org.imgLocaleString
            End If
        End If
    End Sub

    Protected Sub BtnCerca_Click(sender As Object, e As System.EventArgs) Handles BtnCerca.Click
        Dim Sql As String = "SELECT PK_Evento, NomeEvento, DataInizio, DataFine FROM Evento E " & _
                 " LEFT OUTER JOIN Indirizzo I ON I.PK_Indirizzo = FK_Indirizzo " & _
                 " LEFT OUTER JOIN Evento_Organizzatore EO ON PK_Evento = EO.FK_Evento " & _
                 " LEFT OUTER JOIN Organizzatore O ON O.PK_Organizzatore = EO.FK_Organizzatore " & _
                 " LEFT OUTER JOIN Anagrafica A ON A.PK_Anagrafica = O.FK_Anagrafica " & _
                 " WHERE E.Deleted = 0 AND (E.NomeEvento like '%" & TbToSearch.Text.Replace(" ", "%") & "%' " & _
                 " OR E.Descrizione like '%" & TbToSearch.Text.Replace(" ", "%") & "%' " & _
                 " OR E.link like '%" & TbToSearch.Text.Replace(" ", "%") & "%' " & _
                 " OR isnull(I.Strada,'') + ' ' + isnull(I.Civico,'') + ' ' + isnull(I.Comune,'') + ' ' + isnull(I.Presso,'') like '%" & TbToSearch.Text.Replace(" ", "%") & "%' " & _
                 " OR A.Denominazione like '%" & TbToSearch.Text.Replace(" ", "%") & "%') " & _
                 " ORDER BY DataModifica desc, PK_Evento desc"
        caricaGrid(Sql)
    End Sub

    Protected Sub BtnMostratutto_Click(sender As Object, e As System.EventArgs) Handles BtnMostratutto.Click
        caricaGrid(SqlGlobal)
    End Sub
End Class

